{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [],
   "source": [
    "import sys\n",
    "sys.path.append(\"e:\\\\Project\\\\abnormal-sound-detection\")\n",
    "from utils import *\n",
    "from sklearn.metrics import *\n",
    "from tqdm import tqdm\n",
    "import os \n",
    "from collections import Counter\n",
    "import matplotlib\n",
    "import matplotlib.pyplot as plt\n",
    "from sklearn.ensemble import RandomForestClassifier\n",
    "from sklearn.model_selection import KFold\n",
    "from sklearn.metrics import accuracy_score\n",
    "from deepforest import CascadeForestClassifier\n",
    "\n",
    "matplotlib.rcParams[\"font.family\"] = \"Times New Roman\"\n",
    "matplotlib.rcParams[\"legend.fontsize\"] = 16\n",
    "matplotlib.rcParams[\"xtick.major.size\"] = 12\n",
    "matplotlib.rcParams[\"ytick.major.size\"] = 12"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Test MIMII utilitying model trained by Haier data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(359, 1016)"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "MIMII_path = \"E:/DataSet/MIMII/id_02\"\n",
    "n_files = [MIMII_path + \"/abnormal/\" + file for file in os.listdir(MIMII_path + \"/abnormal\")]\n",
    "p_files = [MIMII_path + \"/normal/\" + file for file in os.listdir(MIMII_path + \"/normal\")]\n",
    "len(n_files), len(p_files)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 1350/1350 [02:16<00:00,  9.87it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "              precision    recall  f1-score   support\n",
      "\n",
      "           0       0.51      0.74      0.60       696\n",
      "           1       0.47      0.25      0.33       654\n",
      "\n",
      "    accuracy                           0.50      1350\n",
      "   macro avg       0.49      0.49      0.47      1350\n",
      "weighted avg       0.49      0.50      0.47      1350\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\n"
     ]
    }
   ],
   "source": [
    "model = ASCascadeDeepForest()\n",
    "model.load_model(\"../model/deep_forest.joblib\")\n",
    "sub_files = n_files[:350] + p_files[:1000]\n",
    "sub_labels = [1] * 350 + [0] * 1000\n",
    "pre_labels = []\n",
    "for i in tqdm(range(len(sub_files))):\n",
    "    prelab = model.predict_wav_file(sub_files[i])[0]\n",
    "    pre_labels.append(prelab)\n",
    "\n",
    "print(classification_report(pre_labels, sub_labels))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Result\n",
    "### ASSVM id_00\n",
    "|               |  precision  |  recall   | f1-score |  support |\n",
    "|    ---        |   ---       |   ---     |   ---    | ---      |\n",
    "|           0   |    0.90     |    0.71   |   0.79   |  1262    |\n",
    "|           1   |    0.09     |    0.25   |   0.13   |    138   |\n",
    "|    accuracy   |             |           |   0.67   |   1400   |\n",
    "|   macro avg   |    0.49     |    0.48   |   0.46   |   1400   |\n",
    "|weighted avg   |    0.82     |    0.67   |   0.73   |   1400   |\n",
    "\n",
    "### ASSVM id_02\n",
    "|               |  precision  |  recall   | f1-score |  support |\n",
    "|    ---        |   ---       |   ---     |   ---    | ---      |\n",
    "|           0 |      0.99   |   0.74   |   0.85   |   1330\n",
    "|           1 |      0.03   |   0.50   |   0.05   |     20\n",
    "|    accuracy |             |          |   0.74   |   1350\n",
    "|   macro avg |      0.51   |   0.62   |   0.45   |   1350\n",
    "|weighted avg |      0.98   |   0.74   |   0.84   |   1350\n",
    "\n",
    "### ASRandomForest id_00\n",
    "|               |  precision  |  recall   | f1-score |  support |\n",
    "|    ---        |   ---       |   ---     |   ---    | ---      |\n",
    "|           0   |    0.54   |   0.72  |    0.62  |     752\n",
    "|           1   |    0.41   |   0.24  |    0.30  |     598\n",
    "|    accuracy   |           |         |    0.51  |    1350\n",
    "|   macro avg   |    0.47   |   0.48  |    0.46  |    1350\n",
    "|weighted avg   |    0.48   |   0.51  |    0.48  |    1350\n",
    "\n",
    "### ASRandomForest id_02\n",
    "|               |  precision  |  recall   | f1-score |  support |\n",
    "|    ---        |   ---       |   ---     |   ---    | ---      |\n",
    "|           0   |    0.41   |   0.72   |   0.52   |    575\n",
    "|           1   |    0.54   |   0.24   |   0.33   |    775\n",
    "|    accuracy   |           |          |   0.45   |   1350\n",
    "|   macro avg   |    0.48   |   0.48   |   0.43   |   1350\n",
    "|weighted avg   |    0.48   |   0.45   |   0.42   |   1350\n",
    "\n",
    "### ASCascadeDeepForest id_00\n",
    "|               |  precision  |  recall   | f1-score |  support |\n",
    "|    ---        |   ---       |   ---     |   ---    | ---      |\n",
    "|           0   |    0.56   |   0.72   |   0.63   |    775\n",
    "|           1   |    0.38   |   0.23   |   0.29   |    575\n",
    "|    accuracy   |           |          |   0.51   |   1350\n",
    "|   macro avg   |    0.47   |   0.48   |   0.46   |   1350\n",
    "|weighted avg   |    0.48   |   0.51   |   0.48   |   1350\n",
    "\n",
    "### ASCascadeDeepForest id_02\n",
    "|               |  precision  |  recall   | f1-score |  support |\n",
    "|    ---        |   ---       |   ---     |   ---    | ---      |\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Train model on MIMII"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "meta data has been dumped at \u001b[32m../data/meta_id_00.json\u001b[0m\n",
      "+------------+-----------+\n",
      "| train size | test size |\n",
      "+------------+-----------+\n",
      "|    1133    |    285    |\n",
      "+------------+-----------+\n"
     ]
    }
   ],
   "source": [
    "get_meta_data(\n",
    "    meta_data_file=\"../data/meta_id_00.json\",\n",
    "    train_ratio=0.8,\n",
    "    n_path=\"e:/DataSet/MIMII/id_00/abnormal/\",\n",
    "    p_path=\"e:/DataSet/MIMII/id_00/normal/\"\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "((1133, 3600), (285, 3600))"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train_x, train_y = load_abnormal(meta_path=\"../data/meta_id_00.json\", return_numpy=True, train=True, p_flag=\"normal\", n_flag=\"abnormal\")\n",
    "test_x, test_y = load_abnormal(meta_path=\"../data/meta_id_00.json\", return_numpy=True, train=False, p_flag=\"normal\", n_flag=\"abnormal\")\n",
    "train_x.shape, test_x.shape"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## SVM"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [],
   "source": [
    "model = ASSVM(C=5)\n",
    "model.fit(train_x, train_y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.7614035087719299"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model.score(test_x, test_y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x1812c578848>]"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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TpyoESNGaNy4cWc937FjR73wwguaOHGiOnbsaFA6Y4SFhemzzz7Tzp07NWPGjHNef+utt3To0CEtW7bMgHTGGzBggA4dOqSDBw+qc+fOVc/78ncmNjZWWVlZ2r17tw4fPqwHH3zwrNe//PJLHTp0yGN/y6g+Bg4cqG+//VaS5OfnpxdffFH33Xef7r///nOO7d+/v5588kk9/fTTioyMdHVUlzrzc2nVqpUWLVqkvXv36rnnnjvv8b703Tnzs5Gku+++W4cOHdKePXvUuHHjs4711e/MiBEjdOjQIe3evVvZ2dm64YYbzjrWz89P69ev16FDh/SXv/zFiLh1YvelR0xMjP2ll16yS7K/8MIL9ujo6KrXli5dag8NDbUHBQXZv/jiC8OzuvJxww032ENCQuzBwcH2zMxMe+/evatea9mypf2BBx4wPKORj+eee+68z/vyd+bMf3aeffZZe2RkZNWfe/fubR80aJDhGY14rF692i7Jft9999kTEhLskuxvv/22vXXr1mcd9/3339sl2du0aWOfOXOm4bld9bnceuut9oCAALvVarVnZ2ef9b3x1e/O6c9Gqv7vGl/+zvTr16/quVdeecUeGBh41nF/+MMf7J07dzY8b20ePnelKz4+XhkZGZKk9PR0xcfHS5IaNWqkDh066MSJEyorK1P79u0VEBBgZFSX+vbbb1VUVKTi4mJt3rxZhw8frnrtuuuu01/+8hctWrRIFovFwJTGiIyM1PDhw7Vr166z/gvL178zqampVf87MjJSWVlZVX+Oi4vTnDlz9P777ys4ONiIeIYpKyuTdPbfNdu3bz/ru9OxY0dVVFRIkvbt26eBAwe6PqiLnf5cFi9erMrKSmVnZysjI0N5eXlnHeeL353Tn0337t111113afPmzbr88svPOsaXvzPr1q2TJPn7+8vPz6/qczgtJiZGK1as0GuvvSY/Pz+X56wLnytdVqtVubm5kqSSkhI1b95ckhQeHq78/Pyq4yoqKrz+8u35hIWF6bffftP+/furnktKSlKHDh303Xff6c033zQwnTGysrIUHR2tW2+9VdOmTau65M935qS2bdtq9+7dZz332muvqX379srOztazzz5rUDJjVfd3ze9fk05+l3zNJZdcouTkZJWXl5/1vC9/d06XrYcfflhJSUlnvcZ35uSS48qVK895fuLEierQoYNat26tBx54wPXB6sDnSldWVpZCQkIkSSaTSTk5OZKknJwcNWrUqOq4kJCQc/4LzBeMHDlSL7744nlfmzJlioKCglycyH2kp6fr3Xff1aWXXiqJ78xpt912m7788stznq+srNQzzzyj9u3bG5DKeNX9XfP71ySptLTU5fmMdvvtt+uf//zneV/z9e9OSkqKfvjhh7OKFd8Z6cYbb9TXX3993teKi4s1YcKEc64QuhufK11Lly5Vz549JUldu3ZVcnKyzGazysrKtHfvXgUHB6thw4bat2+fSkpKDE7rWsOGDdP8+fNVWFiopk2bqkmTJme93qBBA6WlpRkTzk2UlZUpIyOD78wZWrVqpYMHD0qSzGbzWa+ZTCalpKQYEctwZ/5d06lTJ3377bfy9/dXWFiYduzYUVXY27dvr++//97ApK43YsQIzZkzR5WVlWratKkkvju/t2/fPuXm5vKdOUNQUFDVkuPpz+VMFotF3333nRHR6sTwG8tc/Xj++efto0aNsj/xxBP2nj172j/55BO7JHu3bt3sf/3rX+3PPvusvUuXLobndOVj7Nix9l27dtnT0tLsGzdutE+cONH+ww8/2CXZP/vsM/s777xjf/jhh+0hISGGZ3X144477rB///339okTJ9ovv/xyvjNnPJo1a2Z/4okn7JLO+lxSUlLsb775pn306NF2f39/w3O66tG9e3f7b7/9Zu/WrZvd39/f/tJLL9lHjRplHz16tF2SffDgwfaXX37ZLskeFxdnf+qpp+wvvviivXnz5oZnd9Xn8vLLL9u3bt1qT0tLs6enp9uvv/56n/7unPnZTJw40b5o0SL7Y489Zr/00kv5zpz6XKSTv7hzxx13VL1++nMJDg62//LLL/a///3v9nvuucfw3DU92HsRAADABXxueREAAMAIlC4AAAAXoHQBAAC4AKULAADABShdAAAALkDpAgAAcAFKFwAAgAv8f2Pye6+atVcIAAAAAElFTkSuQmCC",
      "image/svg+xml": "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\r\n<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\r\n  \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\r\n<!-- Created with matplotlib (https://matplotlib.org/) -->\r\n<svg height=\"473.862813pt\" version=\"1.1\" viewBox=\"0 0 605.4 473.862813\" width=\"605.4pt\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\r\n <metadata>\r\n  <rdf:RDF xmlns:cc=\"http://creativecommons.org/ns#\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\">\r\n   <cc:Work>\r\n    <dc:type rdf:resource=\"http://purl.org/dc/dcmitype/StillImage\"/>\r\n    <dc:date>2021-08-25T13:06:25.541158</dc:date>\r\n    <dc:format>image/svg+xml</dc:format>\r\n    <dc:creator>\r\n     <cc:Agent>\r\n      <dc:title>Matplotlib v3.3.3, https://matplotlib.org/</dc:title>\r\n     </cc:Agent>\r\n    </dc:creator>\r\n   </cc:Work>\r\n  </rdf:RDF>\r\n </metadata>\r\n <defs>\r\n  <style type=\"text/css\">*{stroke-linecap:butt;stroke-linejoin:round;}</style>\r\n </defs>\r\n <g id=\"figure_1\">\r\n  <g id=\"patch_1\">\r\n   <path d=\"M 0 473.862813 \r\nL 605.4 473.862813 \r\nL 605.4 0 \r\nL 0 0 \r\nz\r\n\"/>\r\n  </g>\r\n  <g id=\"axes_1\">\r\n   <g id=\"patch_2\">\r\n    <path d=\"M 40.2 442.08 \r\nL 598.2 442.08 \r\nL 598.2 7.2 \r\nL 40.2 7.2 \r\nz\r\n\"/>\r\n   </g>\r\n   <g id=\"matplotlib.axis_1\">\r\n    <g id=\"xtick_1\">\r\n     <g id=\"line2d_1\">\r\n      <defs>\r\n       <path d=\"M 0 0 \r\nL 0 12 \r\n\" id=\"m8791fe5607\" style=\"stroke:#ffffff;stroke-width:0.8;\"/>\r\n      </defs>\r\n      <g>\r\n       <use style=\"fill:#ffffff;stroke:#ffffff;stroke-width:0.8;\" x=\"65.563636\" xlink:href=\"#m8791fe5607\" y=\"442.08\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_1\">\r\n      <!-- 0.0 -->\r\n      <g style=\"fill:#ffffff;\" transform=\"translate(59.313636 464.52375)scale(0.1 -0.1)\">\r\n       <defs>\r\n        <path d=\"M 3.609375 32.71875 \r\nQ 3.609375 44.046875 7.03125 52.21875 \r\nQ 10.453125 60.40625 16.109375 64.40625 \r\nQ 20.515625 67.578125 25.203125 67.578125 \r\nQ 32.8125 67.578125 38.875 59.8125 \r\nQ 46.4375 50.203125 46.4375 33.734375 \r\nQ 46.4375 22.21875 43.109375 14.15625 \r\nQ 39.796875 6.109375 34.640625 2.46875 \r\nQ 29.5 -1.171875 24.703125 -1.171875 \r\nQ 15.234375 -1.171875 8.9375 10.015625 \r\nQ 3.609375 19.4375 3.609375 32.71875 \r\nz\r\nM 13.1875 31.5 \r\nQ 13.1875 17.828125 16.546875 9.1875 \r\nQ 19.34375 1.90625 24.859375 1.90625 \r\nQ 27.484375 1.90625 30.3125 4.265625 \r\nQ 33.15625 6.640625 34.625 12.203125 \r\nQ 36.859375 20.609375 36.859375 35.890625 \r\nQ 36.859375 47.21875 34.515625 54.78125 \r\nQ 32.765625 60.40625 29.984375 62.75 \r\nQ 27.984375 64.359375 25.140625 64.359375 \r\nQ 21.828125 64.359375 19.234375 61.375 \r\nQ 15.71875 57.328125 14.453125 48.625 \r\nQ 13.1875 39.9375 13.1875 31.5 \r\nz\r\n\" id=\"TimesNewRomanPSMT-48\"/>\r\n        <path d=\"M 12.5 9.46875 \r\nQ 14.796875 9.46875 16.359375 7.875 \r\nQ 17.921875 6.296875 17.921875 4.046875 \r\nQ 17.921875 1.8125 16.328125 0.21875 \r\nQ 14.75 -1.375 12.5 -1.375 \r\nQ 10.25 -1.375 8.65625 0.21875 \r\nQ 7.078125 1.8125 7.078125 4.046875 \r\nQ 7.078125 6.34375 8.65625 7.90625 \r\nQ 10.25 9.46875 12.5 9.46875 \r\nz\r\n\" id=\"TimesNewRomanPSMT-46\"/>\r\n       </defs>\r\n       <use xlink:href=\"#TimesNewRomanPSMT-48\"/>\r\n       <use x=\"50\" xlink:href=\"#TimesNewRomanPSMT-46\"/>\r\n       <use x=\"75\" xlink:href=\"#TimesNewRomanPSMT-48\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"xtick_2\">\r\n     <g id=\"line2d_2\">\r\n      <g>\r\n       <use style=\"fill:#ffffff;stroke:#ffffff;stroke-width:0.8;\" x=\"136.018182\" xlink:href=\"#m8791fe5607\" y=\"442.08\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_2\">\r\n      <!-- 2.5 -->\r\n      <g style=\"fill:#ffffff;\" transform=\"translate(129.768182 464.52375)scale(0.1 -0.1)\">\r\n       <defs>\r\n        <path d=\"M 45.84375 12.75 \r\nL 41.21875 0 \r\nL 2.15625 0 \r\nL 2.15625 1.8125 \r\nQ 19.390625 17.53125 26.421875 27.484375 \r\nQ 33.453125 37.453125 33.453125 45.703125 \r\nQ 33.453125 52 29.59375 56.046875 \r\nQ 25.734375 60.109375 20.359375 60.109375 \r\nQ 15.484375 60.109375 11.59375 57.25 \r\nQ 7.71875 54.390625 5.859375 48.875 \r\nL 4.046875 48.875 \r\nQ 5.28125 57.90625 10.328125 62.734375 \r\nQ 15.375 67.578125 22.953125 67.578125 \r\nQ 31 67.578125 36.390625 62.40625 \r\nQ 41.796875 57.234375 41.796875 50.203125 \r\nQ 41.796875 45.171875 39.453125 40.140625 \r\nQ 35.84375 32.234375 27.734375 23.390625 \r\nQ 15.578125 10.109375 12.546875 7.375 \r\nL 29.828125 7.375 \r\nQ 35.109375 7.375 37.234375 7.765625 \r\nQ 39.359375 8.15625 41.0625 9.34375 \r\nQ 42.78125 10.546875 44.046875 12.75 \r\nz\r\n\" id=\"TimesNewRomanPSMT-50\"/>\r\n        <path d=\"M 43.40625 66.21875 \r\nL 39.59375 57.90625 \r\nL 19.671875 57.90625 \r\nL 15.328125 49.03125 \r\nQ 28.265625 47.125 35.84375 39.40625 \r\nQ 42.328125 32.765625 42.328125 23.78125 \r\nQ 42.328125 18.5625 40.203125 14.109375 \r\nQ 38.09375 9.671875 34.859375 6.546875 \r\nQ 31.640625 3.421875 27.6875 1.515625 \r\nQ 22.078125 -1.171875 16.15625 -1.171875 \r\nQ 10.203125 -1.171875 7.484375 0.84375 \r\nQ 4.78125 2.875 4.78125 5.328125 \r\nQ 4.78125 6.6875 5.90625 7.734375 \r\nQ 7.03125 8.796875 8.734375 8.796875 \r\nQ 10.015625 8.796875 10.96875 8.40625 \r\nQ 11.921875 8.015625 14.203125 6.390625 \r\nQ 17.875 3.859375 21.625 3.859375 \r\nQ 27.34375 3.859375 31.65625 8.171875 \r\nQ 35.984375 12.5 35.984375 18.703125 \r\nQ 35.984375 24.703125 32.125 29.90625 \r\nQ 28.265625 35.109375 21.484375 37.9375 \r\nQ 16.15625 40.140625 6.984375 40.484375 \r\nL 19.671875 66.21875 \r\nz\r\n\" id=\"TimesNewRomanPSMT-53\"/>\r\n       </defs>\r\n       <use xlink:href=\"#TimesNewRomanPSMT-50\"/>\r\n       <use x=\"50\" xlink:href=\"#TimesNewRomanPSMT-46\"/>\r\n       <use x=\"75\" xlink:href=\"#TimesNewRomanPSMT-53\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"xtick_3\">\r\n     <g id=\"line2d_3\">\r\n      <g>\r\n       <use style=\"fill:#ffffff;stroke:#ffffff;stroke-width:0.8;\" x=\"206.472727\" xlink:href=\"#m8791fe5607\" y=\"442.08\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_3\">\r\n      <!-- 5.0 -->\r\n      <g style=\"fill:#ffffff;\" transform=\"translate(200.222727 464.52375)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#TimesNewRomanPSMT-53\"/>\r\n       <use x=\"50\" xlink:href=\"#TimesNewRomanPSMT-46\"/>\r\n       <use x=\"75\" xlink:href=\"#TimesNewRomanPSMT-48\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"xtick_4\">\r\n     <g id=\"line2d_4\">\r\n      <g>\r\n       <use style=\"fill:#ffffff;stroke:#ffffff;stroke-width:0.8;\" x=\"276.927273\" xlink:href=\"#m8791fe5607\" y=\"442.08\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_4\">\r\n      <!-- 7.5 -->\r\n      <g style=\"fill:#ffffff;\" transform=\"translate(270.677273 464.52375)scale(0.1 -0.1)\">\r\n       <defs>\r\n        <path d=\"M 10.0625 66.21875 \r\nL 45.5625 66.21875 \r\nL 45.5625 64.359375 \r\nL 23.484375 -1.375 \r\nL 18.015625 -1.375 \r\nL 37.796875 58.25 \r\nL 19.578125 58.25 \r\nQ 14.0625 58.25 11.71875 56.9375 \r\nQ 7.625 54.6875 5.125 50 \r\nL 3.71875 50.53125 \r\nz\r\n\" id=\"TimesNewRomanPSMT-55\"/>\r\n       </defs>\r\n       <use xlink:href=\"#TimesNewRomanPSMT-55\"/>\r\n       <use x=\"50\" xlink:href=\"#TimesNewRomanPSMT-46\"/>\r\n       <use x=\"75\" xlink:href=\"#TimesNewRomanPSMT-53\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"xtick_5\">\r\n     <g id=\"line2d_5\">\r\n      <g>\r\n       <use style=\"fill:#ffffff;stroke:#ffffff;stroke-width:0.8;\" x=\"347.381818\" xlink:href=\"#m8791fe5607\" y=\"442.08\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_5\">\r\n      <!-- 10.0 -->\r\n      <g style=\"fill:#ffffff;\" transform=\"translate(338.631818 464.52375)scale(0.1 -0.1)\">\r\n       <defs>\r\n        <path d=\"M 11.71875 59.71875 \r\nL 27.828125 67.578125 \r\nL 29.4375 67.578125 \r\nL 29.4375 11.671875 \r\nQ 29.4375 6.109375 29.90625 4.734375 \r\nQ 30.375 3.375 31.828125 2.640625 \r\nQ 33.296875 1.90625 37.796875 1.8125 \r\nL 37.796875 0 \r\nL 12.890625 0 \r\nL 12.890625 1.8125 \r\nQ 17.578125 1.90625 18.9375 2.609375 \r\nQ 20.3125 3.328125 20.84375 4.515625 \r\nQ 21.390625 5.71875 21.390625 11.671875 \r\nL 21.390625 47.40625 \r\nQ 21.390625 54.640625 20.90625 56.6875 \r\nQ 20.5625 58.25 19.65625 58.984375 \r\nQ 18.75 59.71875 17.484375 59.71875 \r\nQ 15.671875 59.71875 12.453125 58.203125 \r\nz\r\n\" id=\"TimesNewRomanPSMT-49\"/>\r\n       </defs>\r\n       <use xlink:href=\"#TimesNewRomanPSMT-49\"/>\r\n       <use x=\"50\" xlink:href=\"#TimesNewRomanPSMT-48\"/>\r\n       <use x=\"100\" xlink:href=\"#TimesNewRomanPSMT-46\"/>\r\n       <use x=\"125\" xlink:href=\"#TimesNewRomanPSMT-48\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"xtick_6\">\r\n     <g id=\"line2d_6\">\r\n      <g>\r\n       <use style=\"fill:#ffffff;stroke:#ffffff;stroke-width:0.8;\" x=\"417.836364\" xlink:href=\"#m8791fe5607\" y=\"442.08\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_6\">\r\n      <!-- 12.5 -->\r\n      <g style=\"fill:#ffffff;\" transform=\"translate(409.086364 464.52375)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#TimesNewRomanPSMT-49\"/>\r\n       <use x=\"50\" xlink:href=\"#TimesNewRomanPSMT-50\"/>\r\n       <use x=\"100\" xlink:href=\"#TimesNewRomanPSMT-46\"/>\r\n       <use x=\"125\" xlink:href=\"#TimesNewRomanPSMT-53\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"xtick_7\">\r\n     <g id=\"line2d_7\">\r\n      <g>\r\n       <use style=\"fill:#ffffff;stroke:#ffffff;stroke-width:0.8;\" x=\"488.290909\" xlink:href=\"#m8791fe5607\" y=\"442.08\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_7\">\r\n      <!-- 15.0 -->\r\n      <g style=\"fill:#ffffff;\" transform=\"translate(479.540909 464.52375)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#TimesNewRomanPSMT-49\"/>\r\n       <use x=\"50\" xlink:href=\"#TimesNewRomanPSMT-53\"/>\r\n       <use x=\"100\" xlink:href=\"#TimesNewRomanPSMT-46\"/>\r\n       <use x=\"125\" xlink:href=\"#TimesNewRomanPSMT-48\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"xtick_8\">\r\n     <g id=\"line2d_8\">\r\n      <g>\r\n       <use style=\"fill:#ffffff;stroke:#ffffff;stroke-width:0.8;\" x=\"558.745455\" xlink:href=\"#m8791fe5607\" y=\"442.08\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_8\">\r\n      <!-- 17.5 -->\r\n      <g style=\"fill:#ffffff;\" transform=\"translate(549.995455 464.52375)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#TimesNewRomanPSMT-49\"/>\r\n       <use x=\"50\" xlink:href=\"#TimesNewRomanPSMT-55\"/>\r\n       <use x=\"100\" xlink:href=\"#TimesNewRomanPSMT-46\"/>\r\n       <use x=\"125\" xlink:href=\"#TimesNewRomanPSMT-53\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n   </g>\r\n   <g id=\"matplotlib.axis_2\">\r\n    <g id=\"ytick_1\">\r\n     <g id=\"line2d_9\">\r\n      <defs>\r\n       <path d=\"M 0 0 \r\nL -12 0 \r\n\" id=\"m36575c52e3\" style=\"stroke:#ffffff;stroke-width:0.8;\"/>\r\n      </defs>\r\n      <g>\r\n       <use style=\"fill:#ffffff;stroke:#ffffff;stroke-width:0.8;\" x=\"40.2\" xlink:href=\"#m36575c52e3\" y=\"438.373636\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_9\">\r\n      <!-- 0.71 -->\r\n      <g style=\"fill:#ffffff;\" transform=\"translate(7.2 441.845511)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#TimesNewRomanPSMT-48\"/>\r\n       <use x=\"50\" xlink:href=\"#TimesNewRomanPSMT-46\"/>\r\n       <use x=\"75\" xlink:href=\"#TimesNewRomanPSMT-55\"/>\r\n       <use x=\"125\" xlink:href=\"#TimesNewRomanPSMT-49\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"ytick_2\">\r\n     <g id=\"line2d_10\">\r\n      <g>\r\n       <use style=\"fill:#ffffff;stroke:#ffffff;stroke-width:0.8;\" x=\"40.2\" xlink:href=\"#m36575c52e3\" y=\"367.952727\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_10\">\r\n      <!-- 0.72 -->\r\n      <g style=\"fill:#ffffff;\" transform=\"translate(7.2 371.424602)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#TimesNewRomanPSMT-48\"/>\r\n       <use x=\"50\" xlink:href=\"#TimesNewRomanPSMT-46\"/>\r\n       <use x=\"75\" xlink:href=\"#TimesNewRomanPSMT-55\"/>\r\n       <use x=\"125\" xlink:href=\"#TimesNewRomanPSMT-50\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"ytick_3\">\r\n     <g id=\"line2d_11\">\r\n      <g>\r\n       <use style=\"fill:#ffffff;stroke:#ffffff;stroke-width:0.8;\" x=\"40.2\" xlink:href=\"#m36575c52e3\" y=\"297.531818\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_11\">\r\n      <!-- 0.73 -->\r\n      <g style=\"fill:#ffffff;\" transform=\"translate(7.2 301.003693)scale(0.1 -0.1)\">\r\n       <defs>\r\n        <path d=\"M 5.078125 53.609375 \r\nQ 7.90625 60.296875 12.21875 63.9375 \r\nQ 16.546875 67.578125 23 67.578125 \r\nQ 30.953125 67.578125 35.203125 62.40625 \r\nQ 38.421875 58.546875 38.421875 54.15625 \r\nQ 38.421875 46.921875 29.34375 39.203125 \r\nQ 35.453125 36.8125 38.578125 32.375 \r\nQ 41.703125 27.9375 41.703125 21.921875 \r\nQ 41.703125 13.328125 36.234375 7.03125 \r\nQ 29.109375 -1.171875 15.578125 -1.171875 \r\nQ 8.890625 -1.171875 6.46875 0.484375 \r\nQ 4.046875 2.15625 4.046875 4.046875 \r\nQ 4.046875 5.46875 5.1875 6.546875 \r\nQ 6.34375 7.625 7.953125 7.625 \r\nQ 9.1875 7.625 10.453125 7.234375 \r\nQ 11.28125 6.984375 14.203125 5.4375 \r\nQ 17.140625 3.90625 18.265625 3.609375 \r\nQ 20.0625 3.078125 22.125 3.078125 \r\nQ 27.09375 3.078125 30.78125 6.9375 \r\nQ 34.46875 10.796875 34.46875 16.0625 \r\nQ 34.46875 19.921875 32.765625 23.578125 \r\nQ 31.5 26.3125 29.984375 27.734375 \r\nQ 27.875 29.6875 24.21875 31.265625 \r\nQ 20.5625 32.859375 16.75 32.859375 \r\nL 15.1875 32.859375 \r\nL 15.1875 34.328125 \r\nQ 19.046875 34.8125 22.921875 37.109375 \r\nQ 26.8125 39.40625 28.5625 42.625 \r\nQ 30.328125 45.84375 30.328125 49.703125 \r\nQ 30.328125 54.734375 27.171875 57.828125 \r\nQ 24.03125 60.9375 19.34375 60.9375 \r\nQ 11.765625 60.9375 6.6875 52.828125 \r\nz\r\n\" id=\"TimesNewRomanPSMT-51\"/>\r\n       </defs>\r\n       <use xlink:href=\"#TimesNewRomanPSMT-48\"/>\r\n       <use x=\"50\" xlink:href=\"#TimesNewRomanPSMT-46\"/>\r\n       <use x=\"75\" xlink:href=\"#TimesNewRomanPSMT-55\"/>\r\n       <use x=\"125\" xlink:href=\"#TimesNewRomanPSMT-51\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"ytick_4\">\r\n     <g id=\"line2d_12\">\r\n      <g>\r\n       <use style=\"fill:#ffffff;stroke:#ffffff;stroke-width:0.8;\" x=\"40.2\" xlink:href=\"#m36575c52e3\" y=\"227.110909\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_12\">\r\n      <!-- 0.74 -->\r\n      <g style=\"fill:#ffffff;\" transform=\"translate(7.2 230.582784)scale(0.1 -0.1)\">\r\n       <defs>\r\n        <path d=\"M 46.53125 24.421875 \r\nL 46.53125 17.484375 \r\nL 37.640625 17.484375 \r\nL 37.640625 0 \r\nL 29.59375 0 \r\nL 29.59375 17.484375 \r\nL 1.5625 17.484375 \r\nL 1.5625 23.734375 \r\nL 32.28125 67.578125 \r\nL 37.640625 67.578125 \r\nL 37.640625 24.421875 \r\nz\r\nM 29.59375 24.421875 \r\nL 29.59375 57.28125 \r\nL 6.34375 24.421875 \r\nz\r\n\" id=\"TimesNewRomanPSMT-52\"/>\r\n       </defs>\r\n       <use xlink:href=\"#TimesNewRomanPSMT-48\"/>\r\n       <use x=\"50\" xlink:href=\"#TimesNewRomanPSMT-46\"/>\r\n       <use x=\"75\" xlink:href=\"#TimesNewRomanPSMT-55\"/>\r\n       <use x=\"125\" xlink:href=\"#TimesNewRomanPSMT-52\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"ytick_5\">\r\n     <g id=\"line2d_13\">\r\n      <g>\r\n       <use style=\"fill:#ffffff;stroke:#ffffff;stroke-width:0.8;\" x=\"40.2\" xlink:href=\"#m36575c52e3\" y=\"156.69\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_13\">\r\n      <!-- 0.75 -->\r\n      <g style=\"fill:#ffffff;\" transform=\"translate(7.2 160.161875)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#TimesNewRomanPSMT-48\"/>\r\n       <use x=\"50\" xlink:href=\"#TimesNewRomanPSMT-46\"/>\r\n       <use x=\"75\" xlink:href=\"#TimesNewRomanPSMT-55\"/>\r\n       <use x=\"125\" xlink:href=\"#TimesNewRomanPSMT-53\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"ytick_6\">\r\n     <g id=\"line2d_14\">\r\n      <g>\r\n       <use style=\"fill:#ffffff;stroke:#ffffff;stroke-width:0.8;\" x=\"40.2\" xlink:href=\"#m36575c52e3\" y=\"86.269091\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_14\">\r\n      <!-- 0.76 -->\r\n      <g style=\"fill:#ffffff;\" transform=\"translate(7.2 89.740966)scale(0.1 -0.1)\">\r\n       <defs>\r\n        <path d=\"M 44.828125 67.578125 \r\nL 44.828125 65.765625 \r\nQ 38.375 65.140625 34.296875 63.203125 \r\nQ 30.21875 61.28125 26.234375 57.328125 \r\nQ 22.265625 53.375 19.65625 48.515625 \r\nQ 17.046875 43.65625 15.28125 36.96875 \r\nQ 22.3125 41.796875 29.390625 41.796875 \r\nQ 36.1875 41.796875 41.15625 36.328125 \r\nQ 46.140625 30.859375 46.140625 22.265625 \r\nQ 46.140625 13.96875 41.109375 7.125 \r\nQ 35.0625 -1.171875 25.09375 -1.171875 \r\nQ 18.3125 -1.171875 13.578125 3.328125 \r\nQ 4.296875 12.0625 4.296875 25.984375 \r\nQ 4.296875 34.859375 7.859375 42.859375 \r\nQ 11.421875 50.875 18.03125 57.078125 \r\nQ 24.65625 63.28125 30.703125 65.421875 \r\nQ 36.765625 67.578125 42 67.578125 \r\nz\r\nM 14.453125 33.40625 \r\nQ 13.578125 26.8125 13.578125 22.75 \r\nQ 13.578125 18.0625 15.3125 12.5625 \r\nQ 17.046875 7.078125 20.453125 3.859375 \r\nQ 22.953125 1.5625 26.515625 1.5625 \r\nQ 30.765625 1.5625 34.109375 5.5625 \r\nQ 37.453125 9.578125 37.453125 17 \r\nQ 37.453125 25.34375 34.125 31.4375 \r\nQ 30.8125 37.546875 24.703125 37.546875 \r\nQ 22.859375 37.546875 20.734375 36.765625 \r\nQ 18.609375 35.984375 14.453125 33.40625 \r\nz\r\n\" id=\"TimesNewRomanPSMT-54\"/>\r\n       </defs>\r\n       <use xlink:href=\"#TimesNewRomanPSMT-48\"/>\r\n       <use x=\"50\" xlink:href=\"#TimesNewRomanPSMT-46\"/>\r\n       <use x=\"75\" xlink:href=\"#TimesNewRomanPSMT-55\"/>\r\n       <use x=\"125\" xlink:href=\"#TimesNewRomanPSMT-54\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"ytick_7\">\r\n     <g id=\"line2d_15\">\r\n      <g>\r\n       <use style=\"fill:#ffffff;stroke:#ffffff;stroke-width:0.8;\" x=\"40.2\" xlink:href=\"#m36575c52e3\" y=\"15.848182\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_15\">\r\n      <!-- 0.77 -->\r\n      <g style=\"fill:#ffffff;\" transform=\"translate(7.2 19.320057)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#TimesNewRomanPSMT-48\"/>\r\n       <use x=\"50\" xlink:href=\"#TimesNewRomanPSMT-46\"/>\r\n       <use x=\"75\" xlink:href=\"#TimesNewRomanPSMT-55\"/>\r\n       <use x=\"125\" xlink:href=\"#TimesNewRomanPSMT-55\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n   </g>\r\n   <g id=\"line2d_16\">\r\n    <path clip-path=\"url(#pfbacbbb587)\" d=\"M 65.563636 422.312727 \r\nL 93.745455 125.803636 \r\nL 121.927273 26.967273 \r\nL 150.109091 26.967273 \r\nL 178.290909 76.385455 \r\nL 206.472727 26.967273 \r\nL 234.654545 101.094545 \r\nL 262.836364 125.803636 \r\nL 291.018182 125.803636 \r\nL 319.2 199.930909 \r\nL 347.381818 224.64 \r\nL 375.563636 175.221818 \r\nL 403.745455 274.058182 \r\nL 431.927273 274.058182 \r\nL 460.109091 298.767273 \r\nL 488.290909 323.476364 \r\nL 516.472727 372.894545 \r\nL 544.654545 397.603636 \r\nL 572.836364 397.603636 \r\n\" style=\"fill:none;stroke:#8dd3c7;stroke-linecap:square;stroke-width:1.5;\"/>\r\n   </g>\r\n   <g id=\"patch_3\">\r\n    <path d=\"M 40.2 442.08 \r\nL 40.2 7.2 \r\n\" style=\"fill:none;stroke:#ffffff;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\r\n   </g>\r\n   <g id=\"patch_4\">\r\n    <path d=\"M 598.2 442.08 \r\nL 598.2 7.2 \r\n\" style=\"fill:none;stroke:#ffffff;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\r\n   </g>\r\n   <g id=\"patch_5\">\r\n    <path d=\"M 40.2 442.08 \r\nL 598.2 442.08 \r\n\" style=\"fill:none;stroke:#ffffff;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\r\n   </g>\r\n   <g id=\"patch_6\">\r\n    <path d=\"M 40.2 7.2 \r\nL 598.2 7.2 \r\n\" style=\"fill:none;stroke:#ffffff;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\r\n   </g>\r\n  </g>\r\n </g>\r\n <defs>\r\n  <clipPath id=\"pfbacbbb587\">\r\n   <rect height=\"434.88\" width=\"558\" x=\"40.2\" y=\"7.2\"/>\r\n  </clipPath>\r\n </defs>\r\n</svg>\r\n",
      "text/plain": [
       "<Figure size 720x576 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "scores = []\n",
    "for i in range(1, 20):\n",
    "    model = ASSVM(C=i)\n",
    "    model.fit(train_x, train_y)\n",
    "    scores.append(model.score(test_x, test_y))\n",
    "plt.figure(figsize=[10, 8])\n",
    "plt.plot(scores)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Random Forest"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "RandomForestClassifier(n_estimators=200)"
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model = RandomForestClassifier(n_estimators=200, criterion=\"gini\")\n",
    "model.fit(train_x, train_y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.712280701754386"
      ]
     },
     "execution_count": 35,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model.score(test_x, test_y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[2021-08-25 05:23:02.215] Start to fit the model:\n",
      "[2021-08-25 05:23:02.215] Fitting cascade layer = 0 \n",
      "[2021-08-25 05:23:11.212] layer = 0  | Val Acc = 71.315 % | Elapsed = 8.997 s\n",
      "[2021-08-25 05:23:11.224] Fitting cascade layer = 1 \n",
      "[2021-08-25 05:23:17.817] layer = 1  | Val Acc = 71.668 % | Elapsed = 6.593 s\n",
      "[2021-08-25 05:23:17.819] Fitting cascade layer = 2 \n",
      "[2021-08-25 05:23:24.436] layer = 2  | Val Acc = 71.933 % | Elapsed = 6.617 s\n",
      "[2021-08-25 05:23:24.439] Fitting cascade layer = 3 \n",
      "[2021-08-25 05:23:31.185] layer = 3  | Val Acc = 71.668 % | Elapsed = 6.746 s\n",
      "[2021-08-25 05:23:31.185] Early stopping counter: 1 out of 2\n",
      "[2021-08-25 05:23:31.187] Fitting cascade layer = 4 \n"
     ]
    }
   ],
   "source": [
    "model = ASCascadeDeepForest(verbose=0)\n",
    "model.fit(train_x, train_y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "model.score(test_x, test_y)"
   ]
  }
 ],
 "metadata": {
  "interpreter": {
   "hash": "4ce0e62306dd6a5716965d4519ada776f947e6dfc145b604b11307c10277ef29"
  },
  "kernelspec": {
   "display_name": "Python 3.7.6 64-bit",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.6"
  },
  "orig_nbformat": 4
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
